package com.leicx.guli.common.utils;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

import java.util.Map;

/**
 * @author daxiong
 * @date 2021/6/14 下午5:30
 */
public class CommonPageQueryUtil {

    /**
     * 通用-设置列表页查询条件
     *
     * @param queryWrapper
     * @param params
     * @param eqColumn     等于的列
     * @param likeColumn   模糊查询的列
     * @return void
     * @author daxiong
     * @date 2021/6/14 下午5:36
     */
    public static void setKeyQuery(QueryWrapper<?> queryWrapper, Map<String, Object> params,
                                   String eqColumn, String likeColumn) {
        String key = (String) params.get("key");
        if (StrUtil.isNotEmpty(key)) {
            queryWrapper.and((item) -> item.eq(eqColumn, key).or().like(likeColumn, key));
        }
    }

    /**
     * 通用-设置列表页查询条件(等于)
     *
     * @param queryWrapper
     * @param params
     * @param keyColumn    要从map中获取值的key
     * @param eqColumn     等于的列
     * @return void
     * @author daxiong
     * @date 2021/6/14 下午5:36
     */
    public static void setNormalEqQuery(QueryWrapper<?> queryWrapper, Map<String, Object> params,
                                        String keyColumn, String eqColumn) {
        String key = (String) params.get(keyColumn);
        if (StrUtil.isNotEmpty(key)) {
            queryWrapper.eq(eqColumn, key);
        }
    }

    public static void setNormalEqQuery(QueryWrapper<?> queryWrapper, Map<String, Object> params,
                                        String eqColumn) {
        setNormalEqQuery(queryWrapper, params, StrUtil.toCamelCase(eqColumn), eqColumn);
    }


    /**
     * 通用-设置列表页公共查询条件
     *
     * @param queryWrapper
     * @param params
     * @param keyColumn    要从map中获取值的key
     * @param column     大于的列
     * @return void
     * @author daxiong
     * @date 2021/6/14 下午5:36
     */
    public static void setCommonQuery(QueryWrapper<?> queryWrapper, Map<String, Object> params,
                                      String keyColumn, String column, String type) {
        String value = (String) params.get(keyColumn);
        if (StrUtil.isNotEmpty(value)) {
            switch (type) {
                case "eq":
                    queryWrapper.eq(column, value);
                    break;
                case "ge":
                    queryWrapper.ge(column, value);
                    break;
                case "le":
                    queryWrapper.le(column, value);
                    break;
                default:
                    break;
            }
        }
    }
}
